package com.hclc.entity.dto;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.hclc.entity.model.enums.IsDisableEnum;
import com.hclc.entity.model.enums.IsRealNameEnum;
import com.hclc.entity.model.enums.UserGenderEnum;
import com.hclc.entity.model.series.CustomLocalDateSerializer;
import com.hclc.entity.model.series.CustomLocalDateTimeSerializer;
import com.hclc.entity.model.series.DeCustomLocalDateSerializer;
import com.hclc.entity.model.series.DeCustomLocalDateTimeSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/** ('-')
 * 查询用户列表dto
 * @author ljj
 * @version 1.0
 * @date 2020/10/25 10:18
 */
@Data
public class SelectUserCustomersDto implements Serializable {
    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    private String userId;

    /**
     * 用户昵称
     */
    @ApiModelProperty(value = "用户昵称")
    private String userName;

    /**
     * 用户账号
     */
    @ApiModelProperty(value = "用户账号")
    private String userAccount;

    /**
     * 手机号
     */
    @ApiModelProperty(value = "手机号")
    private String userPhone;

    /**
     * 用户头像
     */
    @ApiModelProperty(value = "用户头像")
    private String userLogo;

    @ApiModelProperty(value = "用户性别{FEMALE,1,女;MALE,2,男;UNKNOWN,3,未知;}")
    private UserGenderEnum userGender;

    /**
     * 出生日期
     */
    @ApiModelProperty(value = "出生日期")
    @JsonDeserialize(using = DeCustomLocalDateSerializer.class)
    @JsonSerialize(using = CustomLocalDateSerializer.class)
    private LocalDate birth;

    @ApiModelProperty(value = "是否实名{YES,1,是;NO,0,否}")
    private IsRealNameEnum isRealName;


    @ApiModelProperty(value = "是否禁用{YES,1,是;NO,0,否}")
    private IsDisableEnum isDisable;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sort;


    /**
     * 最后一次登录时间
     */
    @ApiModelProperty(value = "最后一次登录时间")
    @JsonDeserialize(using = DeCustomLocalDateTimeSerializer.class)
    @JsonSerialize(using = CustomLocalDateTimeSerializer.class)
    private LocalDateTime lastLoginTime;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonDeserialize(using = DeCustomLocalDateTimeSerializer.class)
    @JsonSerialize(using = CustomLocalDateTimeSerializer.class)
    private LocalDateTime createTime;

    /**
     * 地区id
     */
    @ApiModelProperty(value = "地区id")
    private String areaId;

    /**
     * 省id
     */
    @ApiModelProperty(value = "省id")
    private String provinceId;

    /**
     * 市id
     */
    @ApiModelProperty(value = "市id")
    private String cityId;

    /**
     * 省市区中文(”-“分割)
     */
    @ApiModelProperty(value = "省市区中文(”-“分割)")
    private String regionFullName;

    /**
     * 账户id
     */
    @ApiModelProperty(value = "账户id")
    private String userAmountId;

    /**
     * 交易密码
     */
    @ApiModelProperty(value = "交易密码")
    private String transPass;

    /**
     * 金额
     */
    @ApiModelProperty(value = "金额")
    private String balance;

    /**
     * 总消费额
     */
    @ApiModelProperty(value = "总消费额")
    private String sumConsumption;

    /**
     * 冻结金额
     */
    @ApiModelProperty(value = "冻结金额")
    private String freeze;

    /**
     * 累计充值金额
     */
    @ApiModelProperty(value = "累计充值金额")
    private String sumRechargeBalance;

    /**
     * 累计订单数量
     */
    @ApiModelProperty(value = "累计订单数量")
    private Integer sumOrderNum;

    /**
     * 总收入金额
     */
    @ApiModelProperty(value = "总收入金额")
    private String sumIncomeAmount;

    /**
     * 收货人地址
     */
    @ApiModelProperty(value = "收货人地址")
    private String receiverAddress;

    /**
     * 邀请码
     */
    @ApiModelProperty(value = "邀请码")
    private String inviteCode;

    /**
     * 推荐用户昵称
     */
    @ApiModelProperty(value = "推荐用户昵称")
    private String inviteUserName;

    /**
     * 推荐用户手机号
     */
    @ApiModelProperty(value = "推荐用户手机号")
    private String inviteUserPhone;
}
